package persistence;

import java.util.List;

import com.thoughtworks.xstream.XStream;

/**
 * Interfaz que contiene la firma para la serializacion, deserealizacion y busqueda de objetos
 */
public interface XMLPersistencia {
	/**
	 * Guarda el objeto "object"
	 */
	public abstract void create(Object object);
	
	/**
	 * Elimina el objeto "object"
	 */
	public abstract void delete(Object object);
	
	/**
	 * Elimina el objeto cuyo identificador es "identificator"
	 */
	public abstract void delete(String identificator);
	
	/**
	 * Actualiza el objeto "object"
	 */
	public abstract void update(Object object);
	
	/**
	 * Define el nombre del archivo donde se va a persistir el objeto "object"
	 */
	public abstract String persistingFileName(Object object);
	
	/**
	 * Define la ruta del directorio para la persistencia de objetos
	 */
	public abstract String filesDirectory();
	
	/**
	 * Busqueda de un objeto por su identificador
	 */
	public abstract Object findByIdentificator(String identificator);
	
	/**
	 * Busqueda de todos los objetos de un determinado tipo
	 */
	public abstract List<Object> findAll();
	
	/**
	 * Crea el objeto XStream, necesario para la serializacion y deserealizacion de objetos
	 */
	public abstract XStream createXStream();
}
